<!DOCTYPE html>
<html id="docs" lang="en" class="">
	<head>
	<meta charset="utf-8">
<title>Installing Kubernetes on AWS with kops - Kubernetes</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" type="image/png" href="../../../../images/favicon.png">
<link rel="stylesheet" type="text/css" href="../../../../css/base_fonts.css">
<link rel="stylesheet" type="text/css" href="../../../../css/styles.css">
<link rel="stylesheet" type="text/css" href="https://code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css">
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css">
<link rel="stylesheet" type="text/css" href="../../../../css/callouts.css">
<link rel="stylesheet" type="text/css" href="../../../../css/custom-jekyll/tags.css">




<meta name="description" content="Installing Kubernetes on AWS with kops" />
<meta property="og:description" content="Installing Kubernetes on AWS with kops" />

<meta property="og:url" content="https://kubernetes.io/docs/setup/custom-cloud/kops/" />
<meta property="og:title" content="Installing Kubernetes on AWS with kops - Kubernetes" />

<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>
<script
src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"
integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU="
crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
<script src="../../../../js/script.js"></script>
<script src="../../../../js/custom-jekyll/tags.js"></script>


	</head>
	<body>
		<div id="cellophane" onclick="kub.toggleMenu()"></div>

<header>
    <a href="../../../../index.html" class="logo"></a>

    <div class="nav-buttons" data-auto-burger="primary">
        <ul class="global-nav">
            
            
            <li><a href="../../../home.1">Documentation</a></li>
            
            <li><a href="../../../../blog/index.html">Blog</a></li>
            
            <li><a href="../../../../partners/index.html">Partners</a></li>
            
            <li><a href="../../../../community/index.html">Community</a></li>
            
            <li><a href="../../../../case-studies/index.html">Case Studies</a></li>
            
            
             <li>
                <a href="../kops.1#">
                    English <span class="ui-icon ui-icon-carat-1-s"></span>
                </a>
                <ul>
                
                    <li><a href="../../../../zh/index.html">中文 Chinese</a></li>
                
                    <li><a href="../../../../ko/index.html">한국어 Korean</a></li>
                
                </ul>
            </li>
         
            <li>
                <a href="../kops.1#">
                    v1.11 <span class="ui-icon ui-icon-carat-1-s"></span>
                </a>
                <ul>
                
                    <li><a href="https://kubernetes.io">v1.12</a></li>
                
                    <li><a href="../../../../index.html">v1.11</a></li>
                
                    <li><a href="https://v1-10.docs.kubernetes.io">v1.10</a></li>
                
                    <li><a href="https://v1-9.docs.kubernetes.io">v1.9</a></li>
                
                </ul>
            </li>
        </ul>
        
        <a href="../../../tutorials/kubernetes-basics/index.html" class="button" id="tryKubernetes" data-auto-burger-exclude>Try Kubernetes</a>
        <button id="hamburger" onclick="kub.toggleMenu()" data-auto-burger-exclude><div></div></button>
    </div>

    <nav id="mainNav">
        <main data-auto-burger="primary">
        <div class="nav-box">
            <h3><a href="../../../tutorials/stateless-application/hello-minikube/index.html">Get Started</a></h3>
            <p>Ready to get your hands dirty? Build a simple Kubernetes cluster that runs "Hello World" for Node.js.</p>
        </div>
        <div class="nav-box">
            <h3><a href="../../../home.1">Documentation</a></h3>
            <p>Learn how to use Kubernetes with the use of walkthroughs, samples, and reference documentation. You can even <a href="../../../../editdocs/index.html" data-auto-burger-exclude>help contribute to the docs</a>!</p>
        </div>
        <div class="nav-box">
            <h3><a href="../../../../community/index.html">Community</a></h3>
            <p>If you need help, you can connect with other Kubernetes users and the Kubernetes authors, attend community events, and watch video presentations from around the web.</p>
        </div>
        <div class="nav-box">
            <h3><a href="../../../../blog/index.html">Blog</a></h3>
            <p>Read the latest news for Kubernetes and the containers space in general, and get technical how-tos hot off the presses.</p>
        </div>
        </main>
        <main data-auto-burger="primary">
        <div class="left">
            <h5 class="github-invite">Interested in hacking on the core Kubernetes code base?</h5>
            <a href="https://github.com/kubernetes/kubernetes" class="button" data-auto-burger-exclude>View On Github</a>
        </div>

        <div class="right">
            <h5 class="github-invite">Explore the community</h5>
            <div class="social">
                <a href="https://twitter.com/kubernetesio" class="twitter"><span>Twitter</span></a>
                <a href="https://github.com/kubernetes/kubernetes" class="github"><span>Github</span></a>
                <a href="http://slack.k8s.io/" class="slack"><span>Slack</span></a>
                <a href="http://stackoverflow.com/questions/tagged/kubernetes" class="stack-overflow"><span>Stack Overflow</span></a>
                <a href="https://discuss.kubernetes.io" class="mailing-list"><span>Forum</span></a>
                <a href="https://calendar.google.com/calendar/embed?src=nt2tcnbtbied3l6gi2h29slvc0%40group.calendar.google.com" class="calendar"><span>Events Calendar</span></a>
            </div>
        </div>
        <div class="clear" style="clear: both"></div>
        </main>
    </nav>
</header>

		
		
		<section id="hero" class="light-text no-sub">
			







<h1>Setup</h1>
<h5></h5>










<div id="vendorStrip" class="light-text">
	<ul>
		
		
		<li><a href="../../../home.1">DOCUMENTATION</a></li>
		
		
		<li><a href="../../index.html" class="YAH">SETUP</a></li>
		
		
		<li><a href="../../../concepts/index.html">CONCEPTS</a></li>
		
		
		<li><a href="../../../tasks/index.html">TASKS</a></li>
		
		
		<li><a href="../../../tutorials/index.html">TUTORIALS</a></li>
		
		
		<li><a href="../../../reference.1">REFERENCE</a></li>
		
	</ul>
	<div id="searchBox">
		<input type="text" id="search" placeholder="Search" onkeydown="if (event.keyCode==13) window.location.replace('/docs/search/?q=' + this.value)" autofocus="autofocus">
	</div>
</div>

		</section>
		
		
<section id="deprecationWarning">
  <main>
    <div class="content deprecation-warning">
      <h3>
        Documentation for Kubernetes v1.11 is no longer actively maintained. The version you are currently viewing is a static snapshot.
        For up-to-date documentation, see the <a href="https://kubernetes.io/docs/home/">latest</a> version.
      </h3>
    </div>
  </main>
</section>


		<section id="encyclopedia">
			
<div id="docsToc">
     <div class="pi-accordion">
    	
        
        
        
        
        
         
             
                 
             
         
             
                 
                          
                          
                 
             
         
             
         
             
         
             
         
             
         
             
         
             
         
         
        
        <a class="item" data-title="Setup" href="../../index.html"></a>

	
	
		
		
	<div class="item" data-title="Bootstrapping Clusters with kubeadm">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Customizing control plane configuration with kubeadm" href="../../independent/control-plane-flags/index.html"></a>

		
	
		
		
<a class="item" data-title="Creating Highly Available Clusters with kubeadm" href="../../independent/high-availability.1"></a>

		
	
		
		
<a class="item" data-title="Creating a single master cluster with kubeadm" href="../../../getting-started-guides/kubeadm/index.html"></a>

		
	
		
		
<a class="item" data-title="Troubleshooting kubeadm" href="../../independent/troubleshooting-kubeadm/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Turnkey Cloud Solutions">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Running Kubernetes on AWS EC2" href="../../turnkey/aws/index.html"></a>

		
	
		
		
<a class="item" data-title="Running Kubernetes on Alibaba Cloud" href="../../turnkey/alibaba-cloud/index.html"></a>

		
	
		
		
<a class="item" data-title="Running Kubernetes on Azure" href="../../turnkey/azure/index.html"></a>

		
	
		
		
<a class="item" data-title="Running Kubernetes on CenturyLink Cloud" href="../../turnkey/clc/index.html"></a>

		
	
		
		
<a class="item" data-title="Running Kubernetes on Google Compute Engine" href="../../turnkey/gce/index.html"></a>

		
	
		
		
<a class="item" data-title="Running Kubernetes on Multiple Clouds with Stackpoint.io" href="../../turnkey/stackpoint/index.html"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="On-Premises VMs">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="Cloudstack" href="../../../getting-started-guides/cloudstack/index.html"></a>

		
	
		
		
<a class="item" data-title="Kubernetes on DCOS" href="../../../getting-started-guides/dcos/index.html"></a>

		
	
		
		
<a class="item" data-title="oVirt" href="../../../getting-started-guides/ovirt.1"></a>

		
	

		</div>
	</div>

		
	
		
		
	<div class="item" data-title="Custom Cloud Solutions">
		<div class="container">
		
		
	
	
		
		
<a class="item" data-title="CoreOS on AWS or GCE" href="../../../getting-started-guides/coreos.1"></a>

		
	
		
		
<a class="item" data-title="Installing Kubernetes On-premises/Cloud Providers with Kubespray" href="../../../getting-started-guides/kubespray/index.html"></a>

		
	
		
		
<a class="item" data-title="Installing Kubernetes on AWS with kops" href="../kops.1"></a>

		
	

		</div>
	</div>

		
	
		
		
<a class="item" data-title="Building Large Clusters" href="../../cluster-large/index.html"></a>

		
	
		
		
<a class="item" data-title="Building from Source" href="../../building-from-source/index.html"></a>

		
	
		
		
<a class="item" data-title="Configuring Kubernetes with Salt" href="../../salt/index.html"></a>

		
	
		
		
<a class="item" data-title="Creating a Custom Cluster from Scratch" href="../../../getting-started-guides/scratch/index.html"></a>

		
	
		
		
<a class="item" data-title="Picking the Right Solution" href="../../../getting-started-guides/index.html"></a>

		
	
		
		
<a class="item" data-title="Running Kubernetes Locally via Minikube" href="../../../getting-started-guides/minikube/index.html"></a>

		
	
		
		
<a class="item" data-title="Running in Multiple Zones" href="../../multiple-zones.1"></a>

		
	
		
		
<a class="item" data-title="Validate Node Setup" href="../../node-conformance/index.html"></a>

		
	






     </div> 
    <button class="push-menu-close-button" onclick="kub.toggleToc()"></button>
</div> 

			<div id="docsContent">
				
<p><a href="../../../editdocs#docs/setup/custom-cloud/kops.md" id="editPageButton">Edit This Page</a></p>

<h1>Installing Kubernetes on AWS with kops</h1>



<nav id="TableOfContents">
<ul>
<li>
<ul>
<li><a href="../kops.1#overview">Overview</a></li>
<li><a href="../kops.1#creating-a-cluster">Creating a cluster</a>
<ul>
<li><a href="../kops.1#1-5-install-kops">(1/5) Install kops</a>
<ul>
<li><a href="../kops.1#requirements">Requirements</a></li>
<li><a href="../kops.1#installation">Installation</a></li>
</ul></li>
<li><a href="../kops.1#2-5-create-a-route53-domain-for-your-cluster">(2/5) Create a route53 domain for your cluster</a></li>
<li><a href="../kops.1#3-5-create-an-s3-bucket-to-store-your-clusters-state">(3/5) Create an S3 bucket to store your clusters state</a></li>
<li><a href="../kops.1#4-5-build-your-cluster-configuration">(4/5) Build your cluster configuration</a></li>
<li><a href="../kops.1#5-5-create-the-cluster-in-aws">(5/5) Create the cluster in AWS</a></li>
<li><a href="../kops.1#explore-other-add-ons">Explore other add-ons</a></li>
</ul></li>
<li><a href="../kops.1#what-s-next">What&rsquo;s next</a></li>
<li><a href="../kops.1#cleanup">Cleanup</a></li>
<li><a href="../kops.1#feedback">Feedback</a></li>
</ul></li>
</ul>
</nav>



<h2 id="overview">Overview</h2>

<p>This quickstart shows you how to easily install a Kubernetes cluster on AWS.
It uses a tool called <a href="https://github.com/kubernetes/kops" target="_blank"><code>kops</code></a>.</p>

<p>kops is an opinionated provisioning system:</p>

<ul>
<li>Fully automated installation</li>
<li>Uses DNS to identify clusters</li>
<li>Self-healing: everything runs in Auto-Scaling Groups</li>
<li>Limited OS support (Debian preferred, Ubuntu 16.04 supported, early support for CentOS &amp; RHEL)</li>
<li>High-Availability support</li>
<li>Can directly provision, or generate terraform manifests</li>
</ul>

<p>If your opinions differ from these you may prefer to build your own cluster using <a href="../../../admin/kubeadm/index.html">kubeadm</a> as
a building block.  kops builds on the kubeadm work.</p>

<h2 id="creating-a-cluster">Creating a cluster</h2>

<h3 id="1-5-install-kops">(1/5) Install kops</h3>

<h4 id="requirements">Requirements</h4>

<p>You must have <a href="../../../tasks/kubectl/install/index.html">kubectl</a> installed in order for kops to work.</p>

<h4 id="installation">Installation</h4>

<p>Download kops from the <a href="https://github.com/kubernetes/kops/releases" target="_blank">releases page</a> (it is also easy to build from source):</p>

<p>On MacOS:</p>

<pre><code>curl -OL https://github.com/kubernetes/kops/releases/download/1.8.0/kops-darwin-amd64
chmod +x kops-darwin-amd64
mv kops-darwin-amd64 /usr/local/bin/kops
# you can also install using Homebrew
brew update &amp;&amp; brew install kops
</code></pre>

<p>On Linux:</p>

<pre><code>wget https://github.com/kubernetes/kops/releases/download/1.8.0/kops-linux-amd64
chmod +x kops-linux-amd64
mv kops-linux-amd64 /usr/local/bin/kops
</code></pre>

<h3 id="2-5-create-a-route53-domain-for-your-cluster">(2/5) Create a route53 domain for your cluster</h3>

<p>kops uses DNS for discovery, both inside the cluster and so that you can reach the kubernetes API server
from clients.</p>

<p>kops has a strong opinion on the cluster name: it should be a valid DNS name.  By doing so you will
no longer get your clusters confused, you can share clusters with your colleagues unambiguously,
and you can reach them without relying on remembering an IP address.</p>

<p>You can, and probably should, use subdomains to divide your clusters.  As our example we will use
<code>useast1.dev.example.com</code>.  The API server endpoint will then be <code>api.useast1.dev.example.com</code>.</p>

<p>A Route53 hosted zone can serve subdomains.  Your hosted zone could be <code>useast1.dev.example.com</code>,
but also <code>dev.example.com</code> or even <code>example.com</code>.  kops works with any of these, so typically
you choose for organization reasons (e.g. you are allowed to create records under <code>dev.example.com</code>,
but not under <code>example.com</code>).</p>

<p>Let&rsquo;s assume you&rsquo;re using <code>dev.example.com</code> as your hosted zone.  You create that hosted zone using
the <a href="http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingNewSubdomain.html" target="_blank">normal process</a>, or
with a command such as <code>aws route53 create-hosted-zone --name dev.example.com --caller-reference 1</code>.</p>

<p>You must then set up your NS records in the parent domain, so that records in the domain will resolve.  Here,
you would create NS records in <code>example.com</code> for <code>dev</code>.  If it is a root domain name you would configure the NS
records at your domain registrar (e.g. <code>example.com</code> would need to be configured where you bought <code>example.com</code>).</p>

<p>This step is easy to mess up (it is the #1 cause of problems!)  You can double-check that
your cluster is configured correctly if you have the dig tool by running:</p>

<p><code>dig NS dev.example.com</code></p>

<p>You should see the 4 NS records that Route53 assigned your hosted zone.</p>

<h3 id="3-5-create-an-s3-bucket-to-store-your-clusters-state">(3/5) Create an S3 bucket to store your clusters state</h3>

<p>kops lets you manage your clusters even after installation.  To do this, it must keep track of the clusters
that you have created, along with their configuration, the keys they are using etc.  This information is stored
in an S3 bucket.  S3 permissions are used to control access to the bucket.</p>

<p>Multiple clusters can use the same S3 bucket, and you can share an S3 bucket between your colleagues that
administer the same clusters - this is much easier than passing around kubecfg files.  But anyone with access
to the S3 bucket will have administrative access to all your clusters, so you don&rsquo;t want to share it beyond
the operations team.</p>

<p>So typically you have one S3 bucket for each ops team (and often the name will correspond
to the name of the hosted zone above!)</p>

<p>In our example, we chose <code>dev.example.com</code> as our hosted zone, so let&rsquo;s pick <code>clusters.dev.example.com</code> as
the S3 bucket name.</p>

<ul>
<li><p>Export <code>AWS_PROFILE</code> (if you need to select a profile for the AWS CLI to work)</p></li>

<li><p>Create the S3 bucket using <code>aws s3 mb s3://clusters.dev.example.com</code></p></li>

<li><p>You can <code>export KOPS_STATE_STORE=s3://clusters.dev.example.com</code> and then kops will use this location by default.
We suggest putting this in your bash profile or similar.</p></li>
</ul>

<h3 id="4-5-build-your-cluster-configuration">(4/5) Build your cluster configuration</h3>

<p>Run &ldquo;kops create cluster&rdquo; to create your cluster configuration:</p>

<p><code>kops create cluster --zones=us-east-1c useast1.dev.example.com</code></p>

<p>kops will create the configuration for your cluster.  Note that it <em>only</em> creates the configuration, it does
not actually create the cloud resources - you&rsquo;ll do that in the next step with a <code>kops update cluster</code>.  This
give you an opportunity to review the configuration or change it.</p>

<p>It prints commands you can use to explore further:</p>

<ul>
<li>List your clusters with: <code>kops get cluster</code></li>
<li>Edit this cluster with: <code>kops edit cluster useast1.dev.example.com</code></li>
<li>Edit your node instance group: <code>kops edit ig --name=useast1.dev.example.com nodes</code></li>
<li>Edit your master instance group: <code>kops edit ig --name=useast1.dev.example.com master-us-east-1c</code></li>
</ul>

<p>If this is your first time using kops, do spend a few minutes to try those out!  An instance group is a
set of instances, which will be registered as kubernetes nodes.  On AWS this is implemented via auto-scaling-groups.
You can have several instance groups, for example if you wanted nodes that are a mix of spot and on-demand instances, or
GPU and non-GPU instances.</p>

<h3 id="5-5-create-the-cluster-in-aws">(5/5) Create the cluster in AWS</h3>

<p>Run &ldquo;kops update cluster&rdquo; to create your cluster in AWS:</p>

<p><code>kops update cluster useast1.dev.example.com --yes</code></p>

<p>That takes a few seconds to run, but then your cluster will likely take a few minutes to actually be ready.
<code>kops update cluster</code> will be the tool you&rsquo;ll use whenever you change the configuration of your cluster; it
applies the changes you have made to the configuration to your cluster - reconfiguring AWS or kubernetes as needed.</p>

<p>For example, after you <code>kops edit ig nodes</code>, then <code>kops update cluster --yes</code> to apply your configuration, and
sometimes you will also have to <code>kops rolling-update cluster</code> to roll out the configuration immediately.</p>

<p>Without <code>--yes</code>, <code>kops update cluster</code> will show you a preview of what it is going to do.  This is handy
for production clusters!</p>

<h3 id="explore-other-add-ons">Explore other add-ons</h3>

<p>See the <a href="../../../concepts/cluster-administration/addons/index.html">list of add-ons</a> to explore other add-ons, including tools for logging, monitoring, network policy, visualization &amp; control of your Kubernetes cluster.</p>

<h2 id="what-s-next">What&rsquo;s next</h2>

<ul>
<li>Learn more about Kubernetes <a href="../../../concepts/index.html">concepts</a> and <a href="../../../user-guide/kubectl-overview/index.html"><code>kubectl</code></a>.</li>
<li>Learn about <code>kops</code> <a href="https://github.com/kubernetes/kops" target="_blank">advanced usage</a></li>
</ul>

<h2 id="cleanup">Cleanup</h2>

<ul>
<li>To delete your cluster: <code>kops delete cluster useast1.dev.example.com --yes</code></li>
</ul>

<h2 id="feedback">Feedback</h2>

<ul>
<li>Slack Channel: <a href="https://kubernetes.slack.com/messages/sig-aws/" target="_blank">#sig-aws</a> has a lot of kops users</li>
<li><a href="https://github.com/kubernetes/kops/issues" target="_blank">GitHub Issues</a></li>
</ul>



				<div class="issue-button-container">
					<p><a href="../kops.1"><img src="https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/setup/custom-cloud/kops.md?pixel" alt="Analytics" /></a></p>
					
					
					<script type="text/javascript">
					PDRTJS_settings_8345992 = {
					"id" : "8345992",
					"unique_id" : "\/docs\/setup\/custom-cloud\/kops\/",
					"title" : "Installing Kubernetes on AWS with kops",
					"permalink" : "https:\/\/kubernetes.io\/docs\/setup\/custom-cloud\/kops\/"
					};
					(function(d,c,j){if(!document.getElementById(j)){var pd=d.createElement(c),s;pd.id=j;pd.src=('https:'==document.location.protocol)?'https://polldaddy.com/js/rating/rating.js':'http://i0.poll.fm/js/rating/rating.js';s=document.getElementsByTagName(c)[0];s.parentNode.insertBefore(pd,s);}}(document,'script','pd-rating-js'));
					</script>
					<a href="../kops.1" onclick="window.open('https://github.com/kubernetes/website/issues/new?title=Issue%20with%20' +
					'k8s.io'+window.location.pathname)" class="button issue">Create an Issue</a>
					
					
					
					<a href="../../../editdocs#docs/setup/custom-cloud/kops.md" class="button issue">Edit this Page</a>
					
				</div>
			</div>
		</section>
		<footer>
    <main class="light-text">
        <nav>
            
            
            
            <a href="../../../home.1">Documentation</a>
            
            <a href="../../../../blog/index.html">Blog</a>
            
            <a href="../../../../partners/index.html">Partners</a>
            
            <a href="../../../../community/index.html">Community</a>
            
            <a href="../../../../case-studies/index.html">Case Studies</a>
            
        </nav>
        <div class="social">
            <div>
                <a href="https://twitter.com/kubernetesio" class="twitter"><span>twitter</span></a>
                <a href="https://github.com/kubernetes/kubernetes" class="github"><span>Github</span></a>
                <a href="http://slack.k8s.io/" class="slack"><span>Slack</span></a>
            </div>
            <div>
                <a href="http://stackoverflow.com/questions/tagged/kubernetes" class="stack-overflow"><span>Stack Overflow</span></a>
                <a href="https://discuss.kubernetes.io" class="mailing-list"><span>Forum</span></a>
                <a href="https://calendar.google.com/calendar/embed?src=nt2tcnbtbied3l6gi2h29slvc0%40group.calendar.google.com" class="calendar"><span>Events Calendar</span></a>
            </div>
            <div>
                <a href="../../../getting-started-guides/index.html" class="button">Get Kubernetes</a>
                <a href="https://git.k8s.io/community/contributors/guide" class="button">Contribute</a>
            </div>
        </div>
        <div id="miceType" class="center">
            &copy; 2018 The Kubernetes Authors | Documentation Distributed under <a href="https://git.k8s.io/website/LICENSE" class="light-text">CC BY 4.0</a>
        </div>
        <div id="miceType" class="center">
            Copyright &copy; 2018 The Linux Foundation&reg;. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our <a href="https://www.linuxfoundation.org/trademark-usage" class="light-text">Trademark Usage page</a>
        </div>
    </main>
</footer>

		<button class="flyout-button" onclick="kub.toggleToc()"></button>

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-36037335-10', 'auto');
ga('send', 'pageview');


(function () {
    window.addEventListener('DOMContentLoaded', init)

        
        function init() {
            window.removeEventListener('DOMContentLoaded', init)
                hideNav()
        }

    function hideNav(toc){
        if (!toc) toc = document.querySelector('#docsToc')
        if (!toc) return
            var container = toc.querySelector('.container')

                
                if (container) {
                    if (container.childElementCount === 0 || toc.querySelectorAll('a.item').length === 1) {
                        toc.style.display = 'none'
                            document.getElementById('docsContent').style.width = '100%'
                    }
                } else {
                    requestAnimationFrame(function () {
                        hideNav(toc)
                    })
                }
    }
})();
</script>



	</body>
</html>